home *** CD-ROM | disk | FTP | other *** search
- (******************************************************************************)
- (* This MODULE is Public Domain. Copy me like a beast! *)
- (* Christian Ledermann *)
- (* Wölfelkofen 2 *)
- (* 84166 Adlkofen *)
- (******************************************************************************)
- (* *)
- (* Started: 20.12.92 03:54:30 *)
- (* Version: 20.12.89 00:084:12:54 *)
- (* *)
- (******************************************************************************)
- (* *)
- (* Diese Software ist ohne jede Garantie. Ich verspreche *)
- (* keinerlei Wartung und übernehme keine Verantwortung für Schäden die *)
- (* durch die Benutzung dieses Programmes entstehen. *)
- (* Jegliche Ersatzansprüche lehne ich ab. *)
- (* *)
- (******************************************************************************)
- MODULE Oshell;
-
-
- FROM SYSTEM IMPORT ADR,ADDRESS,VAL;
- FROM Applications IMPORT Init,Terminate,deskx,desky,deskw,deskh,
- InitResource,ShowMenuBar,ShowNormal,DeskTree,
- MenuTree,Colour,Appl;
- FROM KbdEvnt IMPORT MenuSearch;
- FROM AES IMPORT ResourceGetAddr,ObjectChange,ObjectFind,FormAlert,
- GrafMouse,EventMultiple,FormDialogue,GrafDragBox,WindowFind,GrafRubberBox;
-
- FROM EasyDialog IMPORT EasyFileSelect,and,IsSelected,GetObjectXYWH,
- SetObjectXYWH,DoDialog;
- FROM GEMAESbase IMPORT Arrow,PointHand,FlatHand, MesageEvent,TimerEvent,KeyboardEvent,
- ButtonEvent;
-
-
- VAR RSCfileName : ARRAY[1..12] OF CHAR;
- ENDE : BOOLEAN;
- OK : BOOLEAN;
- CONST
- TREE1 = 0; (* TREE *)
- TREE2 = 1; (* TREE *)
- QUIT = 16; (* OBJECT in TREE #1 *)
- ABOUT = 7; (* OBJECT in TREE #1 *)
- DESK = 3; (* OBJECT in TREE #1 *)
- FILE = 4; (* OBJECT in TREE #1 *)
- WINDOWS = 2; (* OBJECT in TREE #0 *)
- XWINDOWS = 3; (* OBJECT in TREE #0 *)
- NEXT = 4; (* OBJECT in TREE #0 *)
- FLOPPY = 7; (* OBJECT in TREE #0 *)
- APPLE = 5; (* OBJECT in TREE #0 *)
- ATARI = 6; (* OBJECT in TREE #0 *)
- TRASH = 8; (* OBJECT in TREE #0 *)
- CRAHMEN = 1; (* OBJECT in TREE #0 *)
- ə
-
-
- PROCEDURE Apple;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,APPLE,0,deskx,desky,deskw,deskh,01H,1);
- String :='[0][Apple | ][ OK ]';
- formret:=FormAlert(1,String);
- ObjectChange(DeskTree,APPLE,0,deskx,desky,deskw,deskh,0H,1);
- END Apple;
-
- PROCEDURE win;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,WINDOWS,0,deskx,desky,deskw,deskh,01H,1);
- String :='[0][MS-Windows | ][ OK ]';
- formret:=FormAlert(1,String);
- ObjectChange(DeskTree,WINDOWS,0,deskx,desky,deskw,deskh,0H,1);
- END win;
-
- PROCEDURE Atari;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,ATARI,0,deskx,desky,deskw,deskh,01H,1);
- String :='[0][ATARI | ][ OK ]';
- formret:=FormAlert(1,String);
- ObjectChange(DeskTree,ATARI,0,deskx,desky,deskw,deskh,0H,1);
- END Atari;
-
- PROCEDURE Xwin;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,XWINDOWS,0,deskx,desky,deskw,deskh,01H,1);
- String :='[0][X-Windows | ][ OK ]';
- formret:=FormAlert(1,String);
- ObjectChange(DeskTree,XWINDOWS,0,deskx,desky,deskw,deskh,0H,1);
- END Xwin;
-
- PROCEDURE Next;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,NEXT,0,deskx,desky,deskw,deskh,01H,1);
- String :='[0][Next | ][ OK ]';
- formret:=FormAlert(1,String);
- ObjectChange(DeskTree,NEXT,0,deskx,desky,deskw,deskh,0H,1);
- END Next;
-
- PROCEDURE Floppy;
- VAR OK : BOOLEAN;
- Pfd,DNme,USchrft : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,FLOPPY,0,deskx,desky,deskw,deskh,01H,1);
- Pfd:='*.DTA';
- DNme:='UNTITLED.DTA';
- USchrft:=' 3.5" Floppy ';
- OK:=EasyFileSelect(Pfd,DNme,USchrft);
- ObjectChange(DeskTree,FLOPPY,0,deskx,desky,deskw,deskh,0H,1);
- END Floppy;
-
- PROCEDURE Loesche;
- VAR OK : BOOLEAN;
- Pfd,DNme,USchrft : ARRAY [0..127] OF CHAR;
- BEGIN
- ObjectChange(DeskTree,TRASH,0,deskx,desky,deskw,deskh,01H,1);
- Pfd:='*.DTA';
- DNme:='UNTITLED.DTA';
- USchrft:=' Datei löschen ';
- OK:=EasyFileSelect(Pfd,DNme,USchrft);
- ObjectChange(DeskTree,TRASH,0,deskx,desky,deskw,deskh,0H,1);
- END Loesche;
-
- PROCEDURE DeselectIcon;
- BEGIN
- ObjectChange(DeskTree,APPLE,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,WINDOWS,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,ATARI,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,XWINDOWS,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,NEXT,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,FLOPPY,0,deskx,desky,deskw,deskh,0H,1);
- ObjectChange(DeskTree,TRASH,0,deskx,desky,deskw,deskh,0H,1);
- END DeselectIcon;
-
- PROCEDURE SelectIcon(Icon :INTEGER);
- BEGIN
- IF IsSelected(Icon,DeskTree) THEN
- CASE Icon OF
- APPLE : Apple
- |WINDOWS : win
- |ATARI : Atari
- |XWINDOWS: Xwin
- |NEXT : Next
- ELSE
- (* WriteInt(message,5);*)
- END(*CASE*);
- ELSE
- DeselectIcon;
- ObjectChange(DeskTree,Icon,0,deskx,desky,deskw,deskh,01H,1);
- END(*IF*);
- END SelectIcon;
-
- PROCEDURE MoveIcon(Icon:INTEGER);
- VAR x,y,w,h :CARDINAL;
- xF,yF,formret :INTEGER;
- String : ARRAY [0..127] OF CHAR;
-
- BEGIN
- GetObjectXYWH(Icon,DeskTree,x,y,w,h);
- GrafMouse(FlatHand,NIL);
- GrafDragBox (w,h,x,y,deskx,desky, deskw, deskh,xF,yF);
- IF WindowFind(xF,yF)=0 THEN (* Icons nicht in Fenster ablegen ! *)
- SetObjectXYWH(Icon,DeskTree,xF,yF,w,h);
- IF (xF#VAL(INTEGER,x)) AND (yF#VAL(INTEGER,y)) THEN
- (* Redraw erzwingen an der Stelle an der das Icon war *)
- FormDialogue(0,0,0,0,0,x,y,w,h);
- FormDialogue(3,0,0,0,0,x,y,w,h);
- (* Redraw an der Stelle an der das Icon jetzt ist *)
- FormDialogue(0,0,0,0,0,xF,yF,w,h);
- FormDialogue(3,0,0,0,0,xF,yF,w,h);
- END(*IF*);
- ELSE
- String :='[3][Icons nicht in |Fenster legen | ][ OK ]';
- formret:=FormAlert(1,String);
- END(*IF*);
- GrafMouse(Arrow,NIL);
-
- END MoveIcon;
-
-
-
- PROCEDURE Auswahl;
- VAR formret : INTEGER;
- String : ARRAY [0..127] OF CHAR;
- message :INTEGER;
- events,flag,mx,my,mbutton,mstate,scancode,mclicks:INTEGER;
- RetChar : CHAR;
- MsgBuf :ARRAY[0..7] OF INTEGER;
- InfoAdr : ADDRESS;
-
- BEGIN
- flag :=MesageEvent+TimerEvent+KeyboardEvent+ButtonEvent;
- REPEAT
- ENDE := FALSE;
- events:=EventMultiple(flag,2,03,01,0,0,0,0,0,0,0,0,0,0,
- ADR(MsgBuf),10000,0,(* Timer Event*)
- mx,my,
- mbutton,mstate,scancode,mclicks);
- IF and(events,MesageEvent)THEN
- message:= MsgBuf[4];
- CASE message OF
- ABOUT : String :='[0][ So wird ein Desktop | verwaltet | Ein Programm von | Christian Ledermann| ver 0.0 vom 25.02.92 ][ OK ]';
- formret:=FormAlert(1,String);
- |QUIT : ENDE := TRUE
- ELSE
- ;
- END(*CASE*);
- END(*IF*);
- IF and(events,ButtonEvent)THEN
- IF WindowFind(mx,my)=0 THEN
- message :=ObjectFind(DeskTree,0,6,mx,my);
- IF mclicks=2 THEN
- CASE message OF
- APPLE : Apple
- |WINDOWS : win
- |ATARI : Atari
- |XWINDOWS: Xwin
- |NEXT : Next
- |FLOPPY : Floppy
- |TRASH : Loesche
- |CRAHMEN : DeselectIcon
- ELSE
- DeselectIcon;
- END(*CASE*);
- ELSE
- CASE message OF
- APPLE, WINDOWS, ATARI, XWINDOWS, NEXT
- : SelectIcon(message);
- |FLOPPY, TRASH
- : SelectIcon(message); MoveIcon(message)
- |CRAHMEN
- : MoveIcon(message)
- ELSE
- GrafMouse(PointHand,NIL);
- DeselectIcon;
- GrafRubberBox(mx,my,1,1,mx,my);
- GrafMouse(Arrow,NIL);
-
- END(*CASE*);
-
- END(*IF*);
- END(*IF*);
- END(*IF*);
-
- IF and(events,TimerEvent) THEN
- (**********************************************************************************************************)
- (*String :='[0][ TimerEvent | Nur zum Test!!!!! | Christian Ledermann| ver 0.0 vom 25.02.93 ][ OK ]';*)
- (*formret:=FormAlert(1,String); *)
- (**********************************************************************************************************)
- END(*IF*);
- IF and(events,KeyboardEvent) THEN
- IF ~MenuSearch(Appl,MenuTree,mstate,scancode,RetChar) THEN
- IF RetChar=33C THEN (* ESC-Taste gedrückt!*)
- ShowMenuBar(FALSE);
- (* Hier wird ein Kommplett Redraw erzwungen ! *)
- FormDialogue(0,0,0,0,0,deskx,desky,deskw,deskh);
- FormDialogue(3,0,0,0,0,deskx,desky,deskw,deskh);
- (* Menü wieder einschalten *)
- ShowMenuBar(TRUE);
- ELSE
- (* String :='[0][ Taste nicht belegt | Nur zum Test!| Christian Ledermann| ver 0.0 vom 25.02.92 ][ OK ]';
- formret:=FormAlert(1,String);*)
- END(*IF*);
- END(*IF*);
- END(*IF*);
- ShowNormal(DESK);
- ShowNormal(FILE);
- UNTIL ENDE
- END Auswahl;
-
- BEGIN
- RSCfileName :='Odesktop.rsc';
- Init;
- OK:=InitResource(TREE1,TREE2,RSCfileName);
- (*GrafMouse(Arrow,NIL);*)
- IF Colour&OK THEN
- ObjectChange(DeskTree,TREE1,0,deskx,desky,deskw,deskh,0,1);
- (* Hier wird ein Kommplett Redraw erzwungen ! *)
- FormDialogue(0,0,0,0,0,deskx,desky,deskw,deskh);
- FormDialogue(3,0,0,0,0,deskx,desky,deskw,deskh);
- END(*IF*);
- IF OK THEN Auswahl END(*IF*);
- Terminate;
- END Oshell.
-